package com.yssoft.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yssoft.entity.core.TPersonnel;
import org.apache.ibatis.annotations.Case;
import org.apache.poi.ss.formula.functions.T;

import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author 陈翼东
 * @time 2018/4/24 下午 03:13
 * @说明 layui使用的工具类
 */
public class LayuiUtil{
    
    /**
     * 通过反射直接将查询出来的对象中的数据封装成json给layui页面使用
     * @param list
     * @param count
     * @return
     * @throws IllegalAccessException
     * @throws ClassNotFoundException
     */
    public static JSONObject getJSONObjectByObject(List list,int count,String msg,String code) throws IllegalAccessException, ClassNotFoundException {
        JSONArray jsonArray=new JSONArray();
        for (Object t : list) {
            Class className = t.getClass();
            JSONObject jsonObject=new JSONObject();
            for(; className != Object.class ; className = className.getSuperclass()) {
                Field[] fields = className.getDeclaredFields();//获取所有私有字段
                for (Field field : fields) {
                    field.setAccessible(true);
                    jsonObject.put(field.getName(), field.get(t)==null?"":field.get(t));
                }
            }
            jsonArray.add(jsonObject);
        }
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("count",count);
        jsonObject.put("data",jsonArray);
        jsonObject.put("msg",msg);
        jsonObject.put("code",code);
        System.out.println("返回数据="+jsonObject.toJSONString());
        return jsonObject;
    }
    
    /**
     * 将查询出来的list<Map<String,Object>>转换成使用的json数据
     * @param personList
     * @param count
     * @return
     */
    public static JSONObject getJSONObjectByMap(List<Map<String,Object>> personList, int count,String msg,String code) {
        JSONArray jsonArray=new JSONArray();
        for (Map<String, Object> map : personList) {
            JSONObject jsonObject=new JSONObject();
            Set<Map.Entry<String, Object>> keys = map.entrySet();
            for (Map.Entry<String, Object> key : keys) {
                String oKey = key.getKey();
                Object value = key.getValue();
                jsonObject.put(oKey, value);
            }
            jsonArray.add(jsonObject);
        }
        JSONObject jsonObject=new JSONObject();
        jsonObject.put("count",count);
        jsonObject.put("data",jsonArray);
        jsonObject.put("msg",msg);
        jsonObject.put("code",code);
        return jsonObject;
    }
}
